package se19team1e.gui;

/**
 * An abstraction of a gui screen, to be referenced by the application and
 * controllers.
 * 
 * <p>
 * This interface is introduced to ease controller unit testing, such that it
 * does not need to create/interact with any real GUI screens.
 * </p>
 * 
 * @author lai shiaw san
 * 
 */
public interface BaseScreen {

	/**
	 * Shows the screen.
	 */
	void show();

	/**
	 * Hides the screen.
	 */
	void hide();

	/**
	 * Disposes the screen after use.
	 */
	void dispose();

	/**
	 * Enable/disable buttons/menu of this screen.
	 */
	void updateAvailableActions();

}
